package js;

public class q排列距离 { // 类名必须是 Main，不可修改
    static String s1 = "aejcldbhpiogfqnkr"; // 字符串 s
    static String s2 = "ncfjboqiealhkrpgd";
    public static void main(String[] args) {
        char c1[]=s1.toCharArray();
        char c2[]=s2.toCharArray();
        long num1=kangtuo(c1);
        long num2=kangtuo(c2);
        System.out.println(Math.min(num2-num1, doFactorial(17)-num2+num1));
    }

    // 计算康托展开数
    public static long kangtuo(char[] s) {
        long ans=1;
        for(int i=0;i<s.length;i++) {
            int temp=0;
            for(int j=i+1;j<s.length;j++) {
                if (s[i]>s[j]) {  // 利用字符值大小跟字母表顺序一致
                    temp++;
                }
            }
            ans+=temp*doFactorial(s.length-i-1);
        }
        return ans;

    }

    // 计算阶乘
    public static long doFactorial(int n) {
        long ans = 1; // 初始化结果为 1
        for (int i = 1; i <= n; i++) { // 循环计算阶乘
            ans *= i; // 将当前数字乘以结果
        }
        return ans; // 返回阶乘结果
    }

}